/*
 * UIManager.hpp
 *
 *  Created on: 01-12-2010
 *      Author: Przemek
 */

#pragma once

#include "GLFont.hpp"
#include "utils/GLColor.hpp"
#include "pch.hpp"

/*
 * Class which handles the output colors of the GUI controls.
 */
class UIManager
{
	private:
		static const std::string DEFAULT_FONT;
		GLFont font;
		GLColor buttonFrameColor;
		GLColor buttonInsideColor;
		GLColor buttonTextColor;

		GLColor spinnerBackgroundColor;
		GLColor spinnerTextColor;

		GLColor scrollBarTrackColor;

		GLColor sliderTrackColor;

		GLColor inputFieldBackgroundColor;
		GLColor inputFieldTextColor;

		GLColor tabbedPaneBackgroundColor;
		GLColor tabbedPaneTabColor;
		GLColor tabbedPaneTabTextColor;

		GLColor checkboxBackground;
		GLColor checkboxCheck;

	public:
		static const UIManager& getInstance();
		const GLFont& getGUIFont() const;
		const GLColor getButtonFrameColor() const;
		const GLColor getButtonInsideColor() const;
		const GLColor getButtonTextColor() const;

		const GLColor getSpinnerBackgroundColor() const;
		const GLColor getSpinnerTextColor() const;

		const GLColor getScrollBarTrackColor() const;

		const GLColor getSliderTrackColor() const;

		const GLColor getInputFieldBackgroundColor() const;
		const GLColor getInputFieldTextColor() const;

		const GLColor getTabbedPaneBackgroundColor() const;
		const GLColor getTabbedPaneTabColor() const;
		const GLColor getTabbedPaneTabTextColor() const;

		const GLColor getCheckboxBackground() const;
		const GLColor getCheckboxCheck() const;

	private:
		UIManager();
		void setColors();

		UIManager(const UIManager& other);
		UIManager& operator=(const UIManager& other);
};
